let arr = [
    [
        ['1-7',['2-5'], '2-6'],
        '4-6',
        [
            ['2-0', '1-4'],
            ['3-9'],
            '4-5',
        ],
    ],
];
// Q1: 完成数组 flat 函数
// function flat(arr) {
//     // code
//     const result=[];
//     function _flat(arr) {
//         arr.forEach((element)=>{
//             if(Array.isArray(element)){
//                 _flat(element)
//             }else{
//                 result.push(element)
//             }
//         })
//     }
//     _flat(arr);
//     arr=result;
//     return arr
// }
// const flat=arr=>[].concat(...arr.map(v=>Array.isArray(v)?flat(v):v));
function flat(arr) {
    const result = []; // 储存结果
    const list = []; // 队列
    function _forEach(arr) {

        arr.forEach(el => {
            if(Array.isArray(el)) list.push(el); // item 如果是数组，将子项依次推入队列
            else result.push(el); // item 如果是字符串，将子项推入结果
        });
    }


    _forEach(arr); // 初始化
    while(list.length > 0) { // 当 list 长度为0时候，遍历完成
        const item = list.shift();
        console.log('item',item);
        _forEach(item);
        console.log('list',list);

    }

    arr = result;
    return arr;
}

// arr = flat(arr);
// console.log(arr);

// Q2: 计算 arr 中所有的值：'1-7' => 1 * 7 = 7， 返回一个数字组成的数组
// function calc(arr) {
//     // code
//     return arr;
// }
//
// arr = calc(arr);
// console.log(arr);
//
// // Q3: 对这个数组排序和去重
// function sortAndReduce(arr) {
//     // code
//     return arr;
// }
//
// arr = sortAndReduce(arr);
// console.log(arr);